﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace VehicleTrajectoryApp
{
    public class Node
    {
        int node_id;
        double latitude;
        double longitude;
        int TAZ_id;

        public int Node_Id
        {
            get
            {
                return node_id;
            }
        }

        public double Latitude
        {
            get 
            { 
                return latitude; 
            }
        }
        public double Longitude
        {
            get 
            { 
                return longitude; 
            }
        }

        public int TAZ_ID
        {
            get
            {
                return TAZ_id;
            }
        }

        public Node(int node_id, double latitude, double longitude, int TAZ_id)
        {
            this.node_id = node_id;
            this.latitude = latitude;
            this.longitude = longitude;
            this.TAZ_id = TAZ_id;
        }

        public static Dictionary<int, Node> ReadNodesFromFile(string fileName)
        {
            Dictionary<int, Node> nodeMap;

            CSVParser parser = new CSVParser();

            if (parser.OpenCSVFile(fileName))
            {
                nodeMap = new Dictionary<int, Node>();

                int node_id;
                double latitude;
                double longitude;
                int TAZ_id;

                while (parser.ReadRecord())
                {
                    if (parser.GetValueByFieldName("Node_ID", out node_id)
                        && parser.GetValueByFieldName("Latitude", out latitude)
                        && parser.GetValueByFieldName("Longitude", out longitude)
                        && parser.GetValueByFieldName("TAZ", out TAZ_id)
                    )
                    {
                        Node node = new Node(node_id, latitude, longitude, TAZ_id);
                        nodeMap.Add(node_id, node);
                    }
                }

                return nodeMap;
            }
            else
            {
                return null;
            }
        }
    }
}
